{
 "cells": [
  {
   "cell_type": "code",
   "execution_count": 1,
   "metadata": {
    "collapsed": true
   },
   "outputs": [],
   "source": [
    "%matplotlib inline"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "# TfLinearRegression"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "A implementation of Ordinary Least Squares simple and multiple linear regression using TensorFlow."
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "> from mlxtend.tf_regressor import TfLinearRegression"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "## Overview"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "The linear regression model is fitted using gradient descent optimization supporting simple and multiple linear regression; for more information on linear regression, please refer to the documentation of the related \n",
    "[`mlxtend.regressor.LinearRegression estimator`](../regressor/LinearRegression.md) and the tutorials:\n",
    "\n",
    "- [Gradient Descent and Stochastic Gradient Descent](../general_concepts/gradient-optimization.md)\n",
    "- [Deriving the Gradient Descent Rule for Linear Regression and Adaline](../general_concepts/linear-gradient-derivative.md)."
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "### References\n"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "- F. Galton. [Regression towards mediocrity in hereditary stature](http://www.jstor.org/stable/2841583). Journal of the Anthropological Institute of Great Britain and Ireland, pages 246–263, 1886.\n",
    "- A. I. Khuri. [Introduction to linear regression analysis](http://onlinelibrary.wiley.com/doi/10.1111/insr.12020_10/abstract), by Douglas C. Montgomery, Elizabeth A. Peck, G. Geoffrey Vining. International Statistical Review, 81(2):318–319, 2013.\n",
    "- D. S. G. Pollock. [The Classical Linear Regression Model](http://www.le.ac.uk/users/dsgp1/COURSES/MESOMET/ECMETXT/06mesmet.pdf)."
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "## Example 1 - Simple Linear Regression"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "### Generate some sample data"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 2,
   "metadata": {
    "collapsed": false
   },
   "outputs": [
    {
     "data": {
      "image/png": "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\n",
      "text/plain": [
       "<matplotlib.figure.Figure at 0x10467d3c8>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    }
   ],
   "source": [
    "import numpy as np\n",
    "import matplotlib.pyplot as plt\n",
    "\n",
    "np.random.seed(1)\n",
    "X = np.array([np.random.normal(1.0, 4.55) for i in range(100)])\n",
    "y = np.array([x1 * 0.1 + 0.1 + np.random.normal(0.0, 0.05) for x1 in X])\n",
    "X = X[:, np.newaxis]\n",
    "\n",
    "plt.scatter(X, y)\n",
    "plt.show()"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "### Fit regressor and check MSE cost"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 3,
   "metadata": {
    "collapsed": false
   },
   "outputs": [
    {
     "name": "stderr",
     "output_type": "stream",
     "text": [
      "Iteration: 5/5 | Cost 2.40 | Elapsed: 00:00:00 | ETA: 00:00:00"
     ]
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "Intercept: 0.10\n",
      "Slope: 0.39\n"
     ]
    },
    {
     "data": {
      "image/png": "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\n",
      "text/plain": [
       "<matplotlib.figure.Figure at 0x106026748>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    }
   ],
   "source": [
    "from mlxtend.tf_regressor import TfLinearRegression\n",
    "\n",
    "gd_lr = TfLinearRegression(eta=0.05, \n",
    "                           epochs=5,\n",
    "                           random_seed=1,\n",
    "                           print_progress=3)\n",
    "gd_lr.fit(X, y)\n",
    "\n",
    "print('Intercept: %.2f' % gd_lr.b_)\n",
    "print('Slope: %.2f' % gd_lr.w_)\n",
    "\n",
    "plt.plot(range(1, gd_lr.epochs+1), gd_lr.cost_)\n",
    "plt.xlabel('epochs')\n",
    "plt.ylabel('mean squared error (MSE)')\n",
    "plt.show()"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "### Continue training for another 50 epochs"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 4,
   "metadata": {
    "collapsed": false
   },
   "outputs": [
    {
     "name": "stderr",
     "output_type": "stream",
     "text": [
      "Iteration: 50/50 | Cost 0.00 | Elapsed: 0:00:00 | ETA: 0:00:00"
     ]
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "Intercept: 0.11\n",
      "Slope: 0.10\n"
     ]
    },
    {
     "data": {
      "image/png": "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\n",
      "text/plain": [
       "<matplotlib.figure.Figure at 0x10d8c5cc0>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    }
   ],
   "source": [
    "gd_lr.epochs = 50\n",
    "gd_lr.fit(X, y, init_params=False)\n",
    "\n",
    "print('Intercept: %.2f' % gd_lr.b_)\n",
    "print('Slope: %.2f' % gd_lr.w_)\n",
    "\n",
    "plt.plot(range(1, 56), gd_lr.cost_)\n",
    "plt.xlabel('epochs')\n",
    "plt.ylabel('mean squared error (MSE)')\n",
    "plt.show()"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "### Visualize the regression fit"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 5,
   "metadata": {
    "collapsed": false
   },
   "outputs": [
    {
     "data": {
      "image/png": "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\nzAAAAABJRU5ErkJggg==\n",
      "text/plain": [
       "<matplotlib.figure.Figure at 0x1046c9cc0>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    }
   ],
   "source": [
    "def lin_regplot(X, y, model):\n",
    "    plt.scatter(X, y, c='blue')\n",
    "    plt.plot(X, model.predict(X), color='red')    \n",
    "    return\n",
    "\n",
    "lin_regplot(X, y, gd_lr)\n",
    "plt.show()"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    " **Tip**: If we are using gradient descent, we should consider standardizing the feature variables for faster convergence:"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 6,
   "metadata": {
    "collapsed": false
   },
   "outputs": [
    {
     "name": "stderr",
     "output_type": "stream",
     "text": [
      "Iteration: 10/10 | Cost 0.01 | Elapsed: 0:00:00 | ETA: 0:00:00"
     ]
    },
    {
     "data": {
      "image/png": "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\nDej/A9D+pxYbbU6HAAAAAElFTkSuQmCC\n",
      "text/plain": [
       "<matplotlib.figure.Figure at 0x10dd6aac8>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    }
   ],
   "source": [
    "X_std = (X - np.mean(X)) / X.std()\n",
    "y_std = (y - np.mean(y)) / y.std()\n",
    "    \n",
    "gd_lr = TfLinearRegression(eta=0.5, \n",
    "                           epochs=10,\n",
    "                           random_seed=0,\n",
    "                           print_progress=3)    \n",
    "gd_lr.fit(X_std, y_std)\n",
    "\n",
    "plt.plot(range(1, gd_lr.epochs + 1), gd_lr.cost_)\n",
    "plt.xlabel('Epochs')\n",
    "plt.ylabel('Cost')\n",
    "plt.tight_layout()\n",
    "plt.show()  "
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 7,
   "metadata": {
    "collapsed": false
   },
   "outputs": [
    {
     "data": {
      "image/png": "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\nrCJW7QAAAABJRU5ErkJggg==\n",
      "text/plain": [
       "<matplotlib.figure.Figure at 0x10602d198>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    }
   ],
   "source": [
    "lin_regplot(X_std, y_std, gd_lr)\n",
    "plt.show()"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "## Example 2 - Multiple Linear Regression"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "### Loading the Boston Housing Data"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 8,
   "metadata": {
    "collapsed": false
   },
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "(506, 14)\n"
     ]
    }
   ],
   "source": [
    "from mlxtend.data import boston_housing_data\n",
    "from mlxtend.preprocessing import shuffle_arrays_unison\n",
    "\n",
    "X, y = boston_housing_data()\n",
    "X, y = shuffle_arrays_unison([X, y], random_seed=1)\n",
    "X_test, y_test = X[:50], y[:50]\n",
    "X_train, y_train = X[50:], y[50:]\n",
    "\n",
    "# standardize\n",
    "mu1, mu2 = X_train.mean(axis=0), y_train.mean()\n",
    "sigma1, sigma2 = X_train.std(axis=0), y_train.std()\n",
    "X_train = (X_train - mu1) / sigma1\n",
    "X_test = (X_test - mu1) / sigma1\n",
    "y_train = (y_train - mu2) / sigma2\n",
    "y_test = (y_test - mu2) / sigma2"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "### Fit the regression model"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 9,
   "metadata": {
    "collapsed": false
   },
   "outputs": [
    {
     "name": "stderr",
     "output_type": "stream",
     "text": [
      "Iteration: 200/200 | Cost 0.27 | Elapsed: 0:00:00 | ETA: 0:00:00"
     ]
    },
    {
     "data": {
      "image/png": "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\nkiRJNfr/AWn8FoYuqQEzAAAAAElFTkSuQmCC\n",
      "text/plain": [
       "<matplotlib.figure.Figure at 0x10dd43470>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    }
   ],
   "source": [
    "gd_lr = TfLinearRegression(eta=0.1, \n",
    "                           epochs=200,\n",
    "                           random_seed=1,\n",
    "                           print_progress=3)    \n",
    "\n",
    "gd_lr.fit(X_train, y_train)\n",
    "\n",
    "plt.plot(range(51, gd_lr.epochs + 1), gd_lr.cost_[50:])\n",
    "plt.xlabel('Epochs')\n",
    "plt.ylabel('Cost')\n",
    "plt.tight_layout()\n",
    "plt.show()  "
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "### Evaluate the results"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 10,
   "metadata": {
    "collapsed": false
   },
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "MSE train: 0.265, test: 0.247\n",
      "R^2 train: 0.735, test: 0.780\n"
     ]
    }
   ],
   "source": [
    "from sklearn.metrics import r2_score\n",
    "from sklearn.metrics import mean_squared_error\n",
    "\n",
    "y_train_pred = gd_lr.predict(X_train)\n",
    "y_test_pred = gd_lr.predict(X_test)\n",
    "\n",
    "print('MSE train: %.3f, test: %.3f' % (\n",
    "        mean_squared_error(y_train, y_train_pred),\n",
    "        mean_squared_error(y_test, y_test_pred)))\n",
    "print('R^2 train: %.3f, test: %.3f' % (\n",
    "        r2_score(y_train, y_train_pred),\n",
    "        r2_score(y_test, y_test_pred)))"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "## API"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 11,
   "metadata": {
    "collapsed": false
   },
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "## TfLinearRegression\n",
      "\n",
      "*TfLinearRegression(eta=0.1, epochs=50, print_progress=0, random_seed=None, dtype=None)*\n",
      "\n",
      "Estimator for Linear Regression in TensorFlow using Gradient Descent.\n",
      "\n",
      "Added in version 0.4.1\n",
      "\n",
      "### Methods\n",
      "\n",
      "<hr>\n",
      "\n",
      "*fit(X, y, init_params=True)*\n",
      "\n",
      "Learn model from training data.\n",
      "\n",
      "**Parameters**\n",
      "\n",
      "- `X` : {array-like, sparse matrix}, shape = [n_samples, n_features]\n",
      "\n",
      "    Training vectors, where n_samples is the number of samples and\n",
      "    n_features is the number of features.\n",
      "\n",
      "- `y` : array-like, shape = [n_samples]\n",
      "\n",
      "    Target values.\n",
      "\n",
      "- `init_params` : bool (default: True)\n",
      "\n",
      "    Re-initializes model parameters prior to fitting.\n",
      "    Set False to continue training with weights from\n",
      "    a previous model fitting.\n",
      "\n",
      "**Returns**\n",
      "\n",
      "- `self` : object\n",
      "\n",
      "\n",
      "<hr>\n",
      "\n",
      "*predict(X)*\n",
      "\n",
      "Predict class labels of X.\n",
      "\n",
      "**Parameters**\n",
      "\n",
      "- `X` : {array-like, sparse matrix}, shape = [n_samples, n_features]\n",
      "\n",
      "    Training vectors, where n_samples is the number of samples and\n",
      "    n_features is the number of features.\n",
      "\n",
      "**Returns**\n",
      "\n",
      "- `class_labels` : array-like, shape = [n_samples]\n",
      "\n",
      "    Predicted class labels.\n",
      "\n",
      "\n"
     ]
    }
   ],
   "source": [
    "with open('../../api_modules/mlxtend.tf_regressor/TfLinearRegression.md', 'r') as f:\n",
    "    print(f.read())"
   ]
  }
 ],
 "metadata": {
  "anaconda-cloud": {},
  "kernelspec": {
   "display_name": "Python 3",
   "language": "python",
   "name": "python3"
  },
  "language_info": {
   "codemirror_mode": {
    "name": "ipython",
    "version": 3
   },
   "file_extension": ".py",
   "mimetype": "text/x-python",
   "name": "python",
   "nbconvert_exporter": "python",
   "pygments_lexer": "ipython3",
   "version": "3.5.2"
  }
 },
 "nbformat": 4,
 "nbformat_minor": 0
}
